package com.xx.springboot.DataStructure.Queue;


import com.xx.springboot.DataStructure.Array.Array;

/**
 * 基于数据的简单队列的实现
 */
public class ArrayQueue<T> implements Queue<T> {

    private Array<T> array;

    /**
     * 队列的长度
     *
     * @return
     */
    public int getSize() {
        return array.getSize();
    }

    /**
     * 队列是否为空
     *
     * @return
     */
    public boolean isEmpty() {
        return array.isEmpty();
    }

    /**
     * 得到队列的第一个元素
     *
     * @return
     */
    public T getFront() {
        return array.getFirst();
    }

    /**
     * 入队操作
     *
     * @param t
     */
    public void enqueue(T t) {
        array.addLast(t);
    }

    /**
     * 出队操作  出队操作基于动态数组 所以在每次出队的时候  都需要遍历一次数组 所以时间复杂度是 O(n) -> 解决办法 循环队列
     *
     * @return
     */
    public T dequeue() {
        return array.removeFirst();
    }
}
